
/**
 * Copyright (c) 2000 by LG-EDS Systems Inc
 * All rights reserved.
 *
 * 자바스크립트 공통함수
 *
 * 주의: 아래의 모든 메소드는 입력폼의 필드이름(myform.myfield)을
 *       파라미터로 받는다. 필드의 값(myform.myfield.value)이 아님을
 *       유념할 것.
 *
 * @version 1.1, 2000/10/06
 * @author 박종진(JongJin Park), ecogeo@dreamwiz.com
 *
 * update by 이재형(anemos), Jul.22, 2003
 */

var EXT = "~!@#$%^&*()_+|`-=\\{}[]:;\"\'<>?,./";

/**
 * 선택된 form을 reset 시킴
 */
function resetForm(f) {
	f.reset();
}

/**
 * input의 개개의 단어가 char에 존재하는지 체크
 * input : form value 
 */
function containsChars(input, chars) {
	for (var idx = 0; idx < input.length; idx++) {
		if (chars.indexOf(input.charAt(idx)) != -1) return true;
	}
	return false;
}
function containsCharsOnly(input, chars) {
	for (var idx = 0; idx < input.length; idx++) {
		if (chars.indexOf(input.charAt(idx)) == -1) return false;
	}
	return true;
}

/**
 * input의 개개의 단어가 chars에 몇개 있는지 count 
 */
function containsCharsCount(input, chars) {
	var count = 0;
	for (var idx = 0; idx < input.length; idx++) {
		if (chars.indexOf(input.charAt(idx)) != -1) count++;
	}
	return count;
}

/**
 * 입력값이 영문인지 체크
 */
function isAlphabet(input) {
	//var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	//return containsChars(input,chars);
	var regexp = /^[a-zA-Z]*$/g;
	return regexp.test(input);
}

/**
 * 입력값이 한글인지 체크
 */
function isKorean(input, type) {
	/*
	var numUnicode = ch.charCodeAt(0);
	if ( 44032 <= numUnicode && numUnicode <= 55203 ) return true;
	return false;
	*/
	// type : 'c':초성포함, 's':초성+공백포함, '':초성,공백무시
	// g:모두, i:대소문자구분안함
	var regexp;
	switch(type){
		case 'c':
			regexp = /^[ㄱ-ㅎ가-힣]*$/g;
			break;
		case 's':
			regexp = /^[ㄱ-ㅎ가-힣\s]*$/g;
			break;
		case '':
			regexp = /^[가-힣]*$/g;
			break;
		default:
			regexp = /^[ㄱ-ㅎ가-힣]*$/g;
			break;
	}
	return regexp.test(input);
}


/**
 * 입력값이 한글인지 체크
 */
function isKoreanFull(input) {
	var checkLang = false;
	for( var idx = 0; idx < input.length; idx++ ) {	
		var numUnicode = (input.substring(idx,idx+1)).charCodeAt(0);
		if ( 44032 <= numUnicode && numUnicode <= 55203 ){
			checkLang = true;
		}
	}
	return checkLang;
}

/**
 * 문자열 길이체크
 */
function getStringLength(input) {
	var str_len = 0;
	for( var idx = 0; idx < input.length; idx++ ) {	
		var numUnicode = input.charCodeAt(idx);
		if(numUnicode>255){
			str_len += 2;
		}else{
			str_len ++;
		}
	}
	return str_len;
}

/**
 * 입력값이 알파벳 대문자인지 체크
 */
function isUpperCase(input) {
	//var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	//return containsCharsOnly(input,chars);
	var regexp = /^[A-Z]*$/g;
	return regexp.test(input);
}

/**
 * 입력값이 알파벳 소문자인지 체크
 */
function isLowerCase(input) {
	//var chars = "abcdefghijklmnopqrstuvwxyz";
	//return containsCharsOnly(input,chars);
	var regexp = /^[a-z]*$/g;
	return regexp.test(input);
}

/**
 * 입력값에 숫자만 있는지 체크
 */
function isNumber(input) {
	//var chars = "0123456789";
	//return containsCharsOnly(input,chars);
	var regexp = /^[0-9]*$/g;
	return regexp.test(input);
}

/**
 * 주소록 그룹 및 조직도 그룹인지 체크
 */
function isGroup(input){
	var regexp = /^(\[)(.+)(\])$/g;
	return regexp.test(input);
}

/**
 * 입력값이 사용자가 정의한 포맷 형식인지 체크
 * 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
 */
function isValidFormat(input,format) {
	if (input.search(format) != -1) {
		return true; //올바른 포맷 형식
	}
	return false;
}

/**
 * 입력값이 이메일 형식인지 체크
 */
function isValidEmail(input) {
	var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
	return isValidFormat(input,format);
}

/**
 * 입력값이 전화번호 형식(숫자-숫자-숫자 또는 숫자)인지 체크
 */
function isValidPhone(input) {
	var format = /^(\d+)-?(\d+)-?(\d+)$/;
	return isValidFormat(input,format);
}

function isEmpty(input) {
	if (input == null || input.replace(/ /gi,"") == "") {
		return true;
	}
	return false;
}

/**
 * 선택된 라디오버튼이 있는지 체크
 * input : form name
 */
function hasCheckedRadio(input) {
	if (input.length > 1) {
		for (var inx = 0; inx < input.length; inx++) {
			if (input[inx].checked) return true;
		}
	} else {
		if (input.checked) return true;
	}
	return false;
}

/**
 * 선택된 체크박스가 있는지 체크
 * input : form name 
 */
function hasCheckedBox(input) {
	return hasCheckedRadio(input);
}

/**
 * 선택된 체크박스의 value를 리턴
 * input : form name 
 */
function hasCheckedBoxValue(input) {
	var idx = 0;
	var array = new Array();
	var count = 0;
	
	if ( input.length != null && input.length > 1 ) {
		for ( idx = 0; idx < input.length; idx++) {
			if (input[idx].checked) {
				array[count++] = input[idx].value;
			}
		}
	} else {
		if (input.checked) array[0] = input.value;
	}

	return array;
}

function hasCheckedBoxValue2(input) {
	var idx = 0;
	var array = new Array();
	var count = 0;
	
	if ( input.length != null && input.length > 1 ) {
		for ( idx = 0; idx < input.length; idx++) {
			if (input[idx].checked) {
				array[count++] = input[idx].value;
			}
		}
	} else {
		if (input.checked) array[0] = input.value;
	}

	return array;
}

/**
 * 입력값의 바이트 길이를 리턴
 * Author : Wonyoung Lee
 */
function getByteLength(input) {
	var byteLength = 0;
	for (var inx = 0; inx < input.length; inx++) {
		var oneChar = escape(input.charAt(inx));
		if ( oneChar.length == 1 ) {
			byteLength ++;
		} else if (oneChar.indexOf("%u") != -1) {
			byteLength += 2;
		} else if (oneChar.indexOf("%") != -1) {
			byteLength += oneChar.length/3;
		}
	}
	return byteLength;
}


/**
 * byte수만큼 substring
 * Author : KJH
 */
function getByteSubString(input,cutLength,end_str) {
	var byteLength = 0;
	var ret_string = "";
	if(getByteLength(input)<cutLength){
		return input;
	}
	for (var inx = 0; inx < input.length; inx++) {
		var oneChar = escape(input.charAt(inx));
		if ( oneChar.length == 1 ) {
			byteLength ++;
		} else if (oneChar.indexOf("%u") != -1) {
			byteLength += 2;
		} else if (oneChar.indexOf("%") != -1) {
			byteLength += oneChar.length/3;
		}
		if(byteLength>cutLength){
			byteLength = inx;
			break;
		}
	}

	ret_string = input.substr(0, byteLength)+end_str;
	return ret_string;
}

/**
 * 선택한 object를 readonly 속성으로 변환
 */
function set_readonly(obj) {
	obj.readOnly = true;
}

function release_readonly(obj) {
	obj.readOnly = false;
}

/*
function checkExtPwd(input) {
	var count = 2;
	var check = 0;

	if( isEmpty(input) ) {
		alert("값을 입력해 주세요");
		return false;
	}
	
	check = containsCharsCount( input, EXT );
	if( count > check ) {
		alert("관리자에게 문의하시기 바랍니다.");
		return false;
	} 
	return true;
}

*/

function checkExtInput(input) {
	var check = 0;
	
	check = containsChars( EXT, input );
		
	if( check > 0 ) {
//		alert("특수문자를 사용하실 수 없습니다.");
		return false;
	}
	return true;
}

function specialChar(input, special) {

	if(special==null || special==""){
		special = EXT;
	}
	
	check = containsChars( special, input );
	
	if(check>0){
		return false;
	}
	return true;
}

var reg = /\s+/g; //공백을 입력했을경우 공백부분을 삭제해줌
function trim(str) { 
	return str.replace(reg,''); 
}

/**
 * radio type의 선택된 값을 리턴
 *
 * select : radio 개체 ( document.thisForm.radio_name )
 **/
/*
function checkedRadioValue(select) {
	var value = "";
	var idx = 0;
	for( idx = 0; idx < select.length; idx++ ) {
		if( select[idx].checked ) {
			value = select[idx].value;
			break;
		}
	}			
	return value;
}
*/
function checkedRadioValue(radio_name) {
	return $(":input:radio[name="+radio_name+"]:checked").val();
}

/**
 * radio type의 선택
 *
 * select : radio 개체 ( document.thisForm.radio_name )
 * selectVal : 선택할 값
 **/
/*
function setRadioValue(select, selectval) {
	for(var idx = 0; idx < select.length; idx++ ) {
		if( select[idx].value==selectval ) {
			select[idx].checked = true;
			break;
		}
	}			
}
*/
function setRadioValue(radio_name, set_val) {
	$('input:radio[name='+radio_name+'][value='+set_val+']').attr('checked', 'checked'); 
}

function existsValue(selectname, value){
	var exists_flag = false;
	$('#'+selectname+' option').each(function(i) { 
		if($(this).val()==value){
			exists_flag = true;
		}
	});   
	return exists_flag;
}

function StringTokenizer(src,delimit) {
	var str = new String(src);
	var array = str.split(delimit);

	var count = 0;
	var msg = "";
	for( count = 0; count < array.length; count++ ) {
		if( array[count] == "" ) continue;
	}
	return array;	
}

function getCount(val,delimit){
    var len = val.split(delimit).length-1;
    return len;
}


// 초중종성 체크
function isCompleteHan(str, flag){
    if(str == null || str == ""){
        return false;
    }   

    var CompleteCode = str.charCodeAt(0);
    var UniValue = CompleteCode - 0xAC00;

    if(UniValue<0){
        return false;
    }   

    var Jong = UniValue % 28; 
    var Jung = ( ( UniValue - Jong ) / 28 ) % 21; 
    var Cho = parseInt (( ( UniValue - Jong ) / 28 ) / 21);
//alert( font_cho[Cho] );
//alert( font_jung[Jung] );
//alert( font_jong[Jong] );
    if(flag=="CHO"){
        if(Cho>=0){
            return true;
        }else{  
            return false;
        }       
    }else if(flag=="JUNG"){
        if(Cho>=0 && Jung>=0){
            return true;
        }else{  
            return false;
        }       
    }else{
        if(Cho>=0 && Jung>=0 && Jong>=0){
            return true;
        }else{  
            return false;
        }       
    }   
}

// 문자변환 
function replaceAll(content,rgExp,replaceText){
	while(true){
		if(content.indexOf(rgExp)==-1){
			break;
		}else{
			content = content.replace(rgExp,replaceText);
		}
	}
	return content;
}

// & 문자 변환
function formValue(fdata){
	if(fdata.indexOf("&")!=-1){
		fdata = fdata.replace(/&/g, "%amp;%");
	}

	return fdata;
}

// 정의되지 않은 객체인지 판단
function checkUndefined(obj) {
	return typeof(obj)=='undefined';
}

/**
 * Array에 해당 데이타가 존재하는지 판단(KJH)
 */
function indexOfArrayCollection(obj, chk_flag, chk_data){
	var chk_val = -1;
	if(obj!=null && obj.length>=1){
		for(var i=0; i<obj.length; i++){
			if(obj[i]==null || obj[i]==""){
				break;
			}
			if(chk_flag=="data"){
				if(obj[i].data==chk_data){
					chk_val = i;
					break;
				}
			}else{
				if(obj[i].name==chk_data){
					chk_val = i;
					break;
				}
			}
		}
	}
	return chk_val;
}

/**
 * Array에 해당 데이타가 존재하는지 판단(KJH)
 */
function indexOfArray(obj, chk_data){
	var chk_val = -1;
	if(obj!=null && obj.length>=1){
		for(var i=0; i<obj.length; i++){
			if(obj[i]==null || obj[i]==""){
				break;
			}
			if(obj[i]==chk_data){
				chk_val = i;
				break;
			}
		}
	}
	return chk_val;
}

// 데이타에 해당하는 체크박스를 선택한다.
function setCheckedData(chekbox_name, checkedVal){
	$("input:checkbox[name="+chekbox_name+"]").each(function(i){
		if($(this).val()==checkedVal){
			$(this).attr("checked", "checked");
		}
	});

	var checkedData = "";
	$("input:checkbox[name="+chekbox_name+"]:checked").each(function(){
		checkedData += $(this).val()+";";
	});
	return checkedData;
}

/**
 * 체크박스 수 가져오기
 */
function getCheckBoxLength(chekbox_name){
	return $("input:checkbox[name="+chekbox_name+"]").length;
}

/**
 * 선택된 체크박스 수 가져오기
 */
function getCheckedLength(chekbox_name){
	return $("input:checkbox[name="+chekbox_name+"]:checked").length;
}

// 선택된 체크박스에 해당하는 이메일주소를 가져온다
function getCheckedEmailData(chekbox_name, hidden_name){
	var checkedData = "";
	$("input:checkbox[name="+chekbox_name+"]").each(function(i){
		if($(this).attr("checked")){
			checkedData += getEmailJS($('#'+hidden_name+'_'+i).val())+";";
		}
	});
	return checkedData;
}

// 선택된 체크박스에 해당하는 input hidden의 값을 가져온다
function getCheckedHiddenData(chekbox_name, hidden_name){
	var checkedData = "";
	$("input:checkbox[name="+chekbox_name+"]").each(function(i){
		if($(this).attr("checked")){
			checkedData += $('#'+hidden_name+i).val()+";";
		}
	});
	return checkedData;
}

// 선택된 체크박스 데이타를 가져온다
function getCheckedData(chekbox_name){
	var checkedData = "";
	$("input:checkbox[name="+chekbox_name+"]:checked").each(function(){
		checkedData += $(this).val()+";";
	});
	return checkedData;
}

// 선택되지 않은 체크박스 데이타를 가져온다
function getUnCheckedData(chekbox_name){
	var uncheckedData = "";
	$("input:checkbox[name="+chekbox_name+"]").each(function(){
		if(!$(this).attr("checked")){
			uncheckedData += $(this).val()+";";
		}
	});
	return uncheckedData;
}

// email주소만 가져온다.
function getEmailJS(str){
	var _email = "";
	if(str==null || str=="" || str.indexOf("@")==-1){
		return _email;
	}

	var sIdx = str.indexOf("<");
	var eIdx = str.indexOf(">");
	if(sIdx!=-1 && eIdx!=-1 && sIdx < eIdx ){
		_email = str.substring(sIdx+1, eIdx);
	}else{
		_email = str;
	}
	
	return _email;
}

// 특정이미지의 Top위치를 가져온다.
function getRealOffsetTop(o) {
	return o ? o.offsetTop + getRealOffsetTop(o.offsetParent) : 0;
} 

// 특정이미지의 Left위치를 가져온다.
function getRealOffsetLeft(o) {
	return o ? o.offsetLeft + getRealOffsetLeft(o.offsetParent) : 0; 
}                        

//브라우저 구분
function checkBrowser(){
	/* JQuery 에서 정의
	$.browser.version
	$.browser.msie
	$.browser.safari
	$.browser.opera
	$.browser.mozilla
	*/
}